package co.sanduche.behave.mmos;

import java.util.List;

import android.util.Log;
import co.sanduche.models.Models;
import co.sanduche.models.Models.Colegio;
import co.sanduche.models.Models.Curso;
import co.sanduche.models.Models.Materia;
import co.sanduche.services.EndPoints.AcudienteEP;
import co.sanduche.util.DepVal0;
import co.sanduche.util.DepVal1;
import co.sanduche.util.DepVal2;
import co.sanduche.util.EPCallback;

public class EstudianteMMO {

	private Long idEstudiante;
	private DepVal0<Colegio> colegio = new DepVal0<Models.Colegio>() {

		@Override
		public void asyncGetter() {
			Log.e("T1", "Va a obtener colegio");
			AcudienteEP.getColegioEstudiante(idEstudiante,
					new EPCallback<Models.Colegio>() {

						@Override
						public void onSuccess(Colegio result) {
							Log.e("T1", "Obtiene el colegio");
							ready(result);
						}

						public void onFailure(Throwable error) {
							Log.e("T1", "laksjdalskjdalskdj");
						}

					});

		}
	};
	private DepVal1<Colegio, Curso> curso = new DepVal1<Models.Colegio, Models.Curso>(
			colegio) {

		@Override
		public void asyncGetter(Colegio colegio) {

			AcudienteEP.getCursoEstudiante(idEstudiante,
					colegio.getIdCalendarioAcademicoActual(),
					new EPCallback<Models.Curso>() {

						@Override
						public void onSuccess(Curso arg0) {
							ready(arg0);
						}

						@Override
						public void onFailure(Throwable e) {
							System.out.println(e);
							failed(e);
						}
					});

		}
	};
	private DepVal2<Colegio, Curso, List<Materia>> materias = new DepVal2<Models.Colegio, Models.Curso, List<Materia>>(
			colegio, curso) {

		@Override
		public void asyncGetter(Colegio colegio, Curso curso) {
			AcudienteEP.getMateriasGrado(curso.getIdGrado(),
					colegio.getIdCalendarioAcademicoActual(),
					new EPCallback<List<Materia>>() {

						@Override
						public void onSuccess(List<Materia> arg0) {
							// TODO Auto-generated method stub
							ready(arg0);
						}

						@Override
						public void onFailure(Throwable e) {
							// TODO Auto-generated method stub
							failed(e);
						}
					});
		}
	};

	public EstudianteMMO(Long idEstudiante) {

		this.idEstudiante = idEstudiante;
	}

	public void getCurso(final EPCallback<Curso> cb) {
		curso.onReady(cb);
	}

	public void getColegio(final EPCallback<Colegio> col) {
		colegio.onReady(col);
	}

	public void getMaterias(final EPCallback<List<Materia>> mates) {
		materias.onReady(mates);
	}

}
